ヘッダーをスキップ
Oracle TimesTen Cache Connect to Oracle開発者および管理者ガイド
リリース6.0
B25773-02
  目次へ
目次
索引へ
索引

前へ
前へ
次へ
次へ
 

パススルー・レベルの設定

アプリケーションで、TimesTenの単一接続を介して、TimesTenキャッシュ・グループまたはOracleのいずれかにSQL文を送信できます(『Oracle TimesTen In-Memory Databaseアーキテクチャ概要』のCache Connect to Oracleに関する章のパススルー機能の項を参照)。

SQLがTimesTenまたはOracleのいずれに送られるかは、SQL文の構成およびDSNのPassThrough属性または接続属性の設定によって決まります。PassThrough属性を設定して、TimesTen内のキャッシュされた表でローカル処理されるSQL文のタイプおよびOracleにリダイレクトされるSQL文のタイプを定義できます。

たとえば、PassThrough=0と設定すると、すべてのSQLがTimesTenで実行されます(これがデフォルトの設定です)。また、PassThrough=3と設定すると、すべてのSQLがOracleに渡されます。

図3.14に示すように、PassThrough=1を設定すると、TimesTenに存在しない表またはTimesTenで構文エラーを生成する表に対するSQLをパススルーできます。たとえば、キャッシュされた表(表A)に対するUPDATEはTimesTenキャッシュで処理されますが、TimesTenで検出されない表(表G)に対するUPDATEはOracleにパススルーされます。同様に、ttCacheStart、ttCkptなどのTimesTen固有のプロシージャはTimesTenで処理されますが、TimesTenでサポートされていないプロシージャはOracleにパススルーされます。

図3.14 TimesTen単一接続機能

PassThrough=1と設定すると、DDL文はOracleにパススルーされません。TimesTenに存在しないプロシージャはOracleにパススルーされます。キャッシュ・グループ表のDML文に誤った構文が含まれている場合、そのDML文はOracleに送信されません。ただし、誤った構文を含むすべてのSELECT文は、Oracleに送信されます。

キャッシュ・グループを作成する場合は、多数のキャッシュ・グループ・タイプから選択できます(「システム管理キャッシュ・グループ・タイプの選択」を参照)。これらのキャッシュ・グループ・タイプの1つとして、キャッシュ・グループでのDML文による更新を禁止するREADONLYキャッシュ・グループがあります。READONLYキャッシュ・グループを使用する場合は、PassThrough=2を設定して、キャッシュ・グループ内の表に対するすべてのDML文をOracleに送ることができます。それ以外の場合、この設定はPassThrough=1と同じであるため、すべてのDDL文、DML以外の構文的に互換性のある文およびプロシージャは、TimesTenに送られます。

READONLY属性は、USERMANAGEDキャッシュ・グループ内の特定の表に設定できます(「キャッシュ・グループ属性およびキャッシュ表属性の定義」を参照)。READONLYキャッシュ・グループに関する前述のパススルー動作と同じパススルー動作が、USERMANAGEDキャッシュ・グループのREADONLY表に適用されます。図3.14のキャッシュ・グループの例について考えてみます。READONLY属性を表Aに設定し、PassThrough = 2を設定すると、表Aに対するUPDATEはOracleにパススルーされます。

パススルー機能は、AWTおよびSWTキャッシュ・グループでは使用しないことをお薦めします。AWTキャッシュ・グループでの更新は、定義上はキャッシュと非同期ですが、パススルーによって同期するようにレンダリングされ、それによって意図しない結果になる場合があります。SWTキャッシュ・グループでの更新は、パススルー機能が実装されている場合、自己デッドロックが発生する可能性があります。

SQL文がTimesTenで実行されるか、Oracleにパススルーされるかの決定に対するPassThrough属性設定の影響およびその状況の詳細は、『Oracle TimesTen In-Memory Database APIおよびSQLリファレンス・ガイド』のデータ・ストア属性に関する章のPassThroughの項を参照してください。

パススルー・レベルの変更

DSNのPassThrough設定は、ttIsqlセッションのパススルー・コマンドで上書きできます。ttOptSetFlagプロシージャをコールし、optflagパラメータとしてpassthroughを指定し、optvalパラメータとして新しいパススルー設定を指定することによって、プログラムでも特定のトランザクションのパススルー設定を再設定できます。新しいパススルー設定はすぐに有効になります。トランザクションの最後に、パススルーはPassThrough属性で指定されている元の値にリセットされます。

注意: PassThroughは、文の準備時に設定されるPassThroughレベルは文の実行時に使用されるレベルであるという点で、他のオプティマイザ・フラグと同様に動作します。文を準備してから文を実行するまでの間にPassThroughレベルを変更すると、現行のPassThroughレベルは無視されます。